A
data flow architecture or language performs a computation
when all the
operands are available.
Data flow is one kind
of
data driven architecture, the other is
demand driven.
It is a technique for specifying parallel computation at a
fine-grain level, usually in the form of two-dimensional
graphs in which instructions that are available for concurrent
execution are written alongside each other while those that
must be executed in sequence are written one under the other.
Data dependencies between instructions are indicated by
directed arcs. Instructions do not reference memory since the
data dependence arcs allow
data to be transmitted directly
from the producing instruction to the consuming one.
Data flow schemes differ chiefly in the way that they handle
re-entrant code. Static schemes disallow it, dynamic
schemes use either "code copying" or "tagging" at every point
of reentry.
An example of a
data flow architecture is
MIT's
VAL
machine.